#!/usr/bin/env python3
"""
SchedulerAI Simplified API启动脚本

提供简单的API服务启动功能，支持开发和生产环境配置。
"""

import os
import sys
import argparse
import uvicorn
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))

def main():
    """主函数"""
    parser = argparse.ArgumentParser(
        description="SchedulerAI Simplified API服务器",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog="""
使用示例:
  python run_api.py                    # 开发模式启动
  python run_api.py --host 0.0.0.0    # 允许外部访问
  python run_api.py --port 9000       # 指定端口
  python run_api.py --prod             # 生产模式启动
        """
    )
    
    parser.add_argument(
        "--host", 
        default="127.0.0.1",
        help="服务器主机地址 (默认: 127.0.0.1)"
    )
    
    parser.add_argument(
        "--port", 
        type=int, 
        default=8000,
        help="服务器端口 (默认: 8000)"
    )
    
    parser.add_argument(
        "--prod", 
        action="store_true",
        help="生产模式启动 (禁用自动重载和调试)"
    )
    
    parser.add_argument(
        "--workers", 
        type=int, 
        default=1,
        help="工作进程数量 (仅生产模式, 默认: 1)"
    )
    
    parser.add_argument(
        "--log-level", 
        choices=["critical", "error", "warning", "info", "debug"],
        default="info",
        help="日志级别 (默认: info)"
    )
    
    args = parser.parse_args()
    
    # 设置环境变量
    os.environ["PYTHONPATH"] = str(project_root)
    
    # 打印启动信息
    print("=" * 60)
    print("🚀 SchedulerAI Simplified API 服务器")
    print("=" * 60)
    print(f"📍 服务地址: http://{args.host}:{args.port}")
    print(f"📚 API文档: http://{args.host}:{args.port}/docs")
    print(f"🏥 健康检查: http://{args.host}:{args.port}/health")
    print(f"📊 系统信息: http://{args.host}:{args.port}/api/v1/info")
    print(f"🔧 运行模式: {'生产模式' if args.prod else '开发模式'}")
    print(f"📝 日志级别: {args.log_level.upper()}")
    
    if args.prod:
        print(f"👥 工作进程: {args.workers}")
    
    print("=" * 60)
    print("按 Ctrl+C 停止服务器")
    print()
    
    try:
        # 启动服务器
        uvicorn.run(
            "scheduler_ai.simplified_api:app",
            host=args.host,
            port=args.port,
            reload=not args.prod,  # 生产模式禁用自动重载
            workers=args.workers if args.prod else 1,
            log_level=args.log_level,
            access_log=True
        )
    except KeyboardInterrupt:
        print("\n👋 服务器已停止")
    except Exception as e:
        print(f"\n❌ 服务器启动失败: {e}")
        sys.exit(1)

if __name__ == "__main__":
    main()